package developer.算法.双指针.盛水最多的容器;

/**
 * @author zhangyongkang
 * @time 2024/6/4 13:57
 * @description
 */
public class Solution_other {

    /**
     * 作者：力扣官方题解
     * 链接：https://leetcode.cn/problems/container-with-most-water/solutions/207215/sheng-zui-duo-shui-de-rong-qi-by-leetcode-solution/
     * 来源：力扣（LeetCode）
     * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     * 可以从“最终组合”的角度来看，当最开始选择左右AB两个边界板时，如果此时A短B长，此时直接就能判定：假如最后的结果中有A的话，那另一块板必须是B！所以含有A板的其它组合都不用再考虑了，记下来AB这个组合的面积后，直接移动左指针即可。
     * 后边以此类推，这样就能记录下所有“有可能是最终组合”的组合，在它们之中寻找最大值即可。
     */
    public int maxArea(int[] height) {
        int l = 0, r = height.length - 1;
        int ans = 0;
        while (l < r) {
            int area = Math.min(height[l], height[r]) * (r - l);
            ans = Math.max(ans, area);
            if (height[l] <= height[r]) {
                ++l;
            } else {
                --r;
            }
        }
        return ans;
    }


}
